/**
 * 权限检查工具函数
 */

/**
 * 检查用户是否拥有指定权限
 * @param {Array} userAuthorities - 用户权限数组
 * @param {Array} requiredPermissions - 所需权限数组
 * @returns {boolean} 是否拥有权限
 */
export const hasPermission = (userAuthorities, requiredPermissions) => {
  // 如果没有设置所需权限，则默认所有人都可以访问
  if (!requiredPermissions || requiredPermissions.length === 0) {
    return true;
  }
  
  // 如果用户没有权限信息，则无法访问
  if (!userAuthorities || userAuthorities.length === 0) {
    return false;
  }
  
  // 将用户权限转换为字符串数组
  const userPermissionList = userAuthorities.map(auth => auth.authority);
  
  // 检查用户是否拥有管理员权限
  if (userPermissionList.includes('ROLE_ADMIN')) {
    return true; // 管理员拥有所有权限
  }
  
  // 检查用户是否拥有任何一个所需权限
  return requiredPermissions.some(permission => 
    userPermissionList.includes(permission)
  );
};

/**
 * 根据用户权限过滤导航项
 * @param {Array} navItems - 导航项数组
 * @param {Array} userAuthorities - 用户权限数组
 * @returns {Array} 过滤后的导航项数组
 */
export const filterNavItemsByPermission = (navItems, userAuthorities) => {
  // 如果用户没有权限信息，返回空数组
  if (!userAuthorities || userAuthorities.length === 0) {
    return [];
  }
  
  // 过滤出用户有权限访问的导航项
  return navItems.filter(item => 
    hasPermission(userAuthorities, item.permissions)
  );
};